<?php

/*
 * Classe Abstraite des codes activités Présent sur le site
 *
 * Code/AbstractPresent.php
 */

namespace RHX\Model\Code;

use RHX\Model\Object\XData;
use RHX\Helper\RHDateTime;

class AbstractPresent extends AbstractCode {

    /**
     * Constructeur de la classe
     *
     * @param array $data
     */
    public function __construct($data = array()) {
	parent::__construct($data);
	$this->anciennete	 = self::PASDELIMITE;
	$this->decompte		 = self::PAYE;
	$this->maximum		 = self::PASDELIMITE;
	$this->repas		 = self::OPTIONNEL;
	$this->pause		 = self::OPTIONNEL;
    }

    /**
     * Calcul pour les Codes activités Présent
     * 
     * @param string $entree Heure d'entrée
     * @param string $sortie Heure de sortie
     * @param int $pause Valeur de la pause
     * @param int $repas Valeur du repas
     * @param float $taux Valeur du taux horaire
     * @param float $coef Valeur du coefficient
     * @param string $refEntree Valeur de la référence d'entrée
     * @param string $refSortie Valeur de la référence de sortie
     * @param array $param Paramètres supplémentaire
     * @return \RHX\Model\Object\XData
     */
    public function calcul($entree, $sortie, $pause, $repas, $taux, $coef, $refEntree, $refSortie, $param = array()) {
	// Objet de Retour
	$return = new XData();

	// Pause
	$heurePause = $this->evaluatePause($pause);

	$heureTravaille	 = RHDateTime::diffHours($sortie, $entree);
	$heureAvecPause	 = RHDateTime::diffHours($heureTravaille, $heurePause);

	$return->tempsDiff	 = $heureAvecPause;
	$return->tempsValeur	 = RHDateTime::toFloat($heureAvecPause);
	$return->montant	 = $return->tempsValeur * $taux * $coef;

	return $return;
    }

    /**
     * Evalue la pause
     * 
     * @param int $pause
     * @return string
     */
    protected function evaluatePause($pause) {
	if ($pause > 0) {
	    return '00:30';
	}

	return '00:00';
    }

}

?>
